home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Applications / TCPExample / PNL Libraries / MyCStrings.p < prev    next >
Text File  |  1996-11-11  |  1KB  |  70 lines

  1. unit MyCStrings;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Types;
  7.         
  8.     procedure CopyC2P (c: Ptr; var s: Str255);
  9.     procedure C2P(p:Ptr);
  10.     procedure CopyP2Cvar (var s:Str255; c: Ptr);
  11.     procedure CopyP2C (s:Str255; c: Ptr);
  12.     procedure P2C(p:Ptr);
  13.         
  14. implementation
  15.  
  16.     uses
  17.         Memory;
  18.         
  19.     procedure CopyC2P (c: Ptr; var s: Str255);
  20.         var
  21.             i,len:integer;
  22.             p,q:Ptr;
  23.     begin
  24.         len:=0;
  25.         p:=c;
  26.         while (p^<>0) & (len<255) do begin
  27.             Inc(len);
  28.             Inc(longint(p));
  29.         end;
  30.         q:=@s[len];
  31.         Dec(longint(p));
  32.         for i:=1 to len do begin
  33.             q^ := p^;
  34.             Dec(longint(q));
  35.             Dec(longint(p));
  36.         end;
  37.         q^ := len;
  38.     end;
  39.  
  40.     procedure C2P(p:Ptr);
  41.     begin
  42.         CopyC2P(p,StringPtr(p)^);
  43.     end;
  44.     
  45.     procedure CopyP2Cvar (var s:Str255; c: Ptr);
  46.         var
  47.             len:integer;
  48.     begin
  49.         len:=length(s);
  50.         BlockMoveData(@s[1],c,len);
  51.         Ptr(longint(c)+len)^ :=0;
  52.     end;
  53.     
  54.     procedure CopyP2C (s:Str255; c: Ptr);
  55.     begin
  56.         BlockMoveData(@s[1],c,length(s));
  57.         Ptr(longint(c)+length(s))^ :=0;
  58.     end;
  59.     
  60.     procedure P2C(p:Ptr);
  61.         var
  62.             len:integer;
  63.     begin
  64.         len:=BAND(p^,$00FF);
  65.         BlockMoveData(Ptr(longint(p)+1),p,len);
  66.         Ptr(longint(p)+len)^ :=0;
  67.     end;
  68.         
  69. end.
  70.